package com.always.electrical.energy.utils;

import lombok.extern.slf4j.Slf4j;

import java.util.Random;

@Slf4j
public class ChineseName {
    private static final String[] surname = {
            "王", "张", "李", "刘", "孙", "赵", "杨", "陈", "徐", "马", "高", "于", "宋", "周", "郭", "朱", "吴", "韩", "姜", "董", "崔", "郑", "胡", "吕", "田",
            "孟", "杜", "黄", "曹", "魏", "许", "冯", "任", "丁", "孔", "贾", "梁", "程", "林", "袁", "侯", "范", "闫", "苏", "付", "尹", "秦", "薛", "潘", "邵",
            "石", "唐", "郝", "姚", "谢", "史", "肖", "邢", "曲", "卢", "牛", "何", "夏", "武", "段", "葛", "齐", "彭", "蒋", "邱", "耿", "翟", "毕", "岳", "蔡",
            "谭", "房", "常", "乔", "邹", "白", "辛", "安", "纪", "路", "焦", "邓", "殷", "庞", "沈", "金", "颜", "苗", "庄", "隋", "宫", "单", "代", "牟", "栾"
    };

    public static String randomName() {
        int index = new Random(System.currentTimeMillis()).nextInt(surname.length - 1);
        //获得一个随机的姓氏
        String name = surname[index];

        /* 从常用字中选取一个或两个字作为名 */
        if (new Random(System.currentTimeMillis()).nextBoolean()) {
            name += getChinese() + getChinese();
        } else {
            name += getChinese();
        }
        return name;
    }

    private static String getChinese() {
        int highPos, lowPos;
        // 区码，0xA0打头，从第16区开始，即0xB0=11*16=176,16~55一级汉字，56~87二级汉字
        highPos = (176 + Math.abs(new Random().nextInt(50)));
        // 位码，0xA0打头，范围第1~94列
        lowPos = 160 + Math.abs(new Random().nextInt(94));

        byte[] bArr = new byte[2];
        bArr[0] = (new Integer(highPos)).byteValue();
        bArr[1] = (new Integer(lowPos)).byteValue();
        try {
            return new String(bArr, "GB2312");
        } catch (Exception e) {
            log.error("ChineseName", e);
        }
        return "";
    }
}
